package com.ocp01;

/**
 * @ClassName: Ocp
 * @Description:
 * @Author: xiedong
 * @Date: 2020/3/21 19:58
 */
public class Ocp {
    public static void main(String[] args) {
        GraphicEditor graphicEditor = new GraphicEditor();
        graphicEditor.drawShape(new Rectangle());
        graphicEditor.drawShape(new Circle());
    }
}
//这是一个用于绘图的类 [使用方]
class GraphicEditor {
    //接收Shape对象，然后根据type，来绘制不同的图形
    public void drawShape(Shape s) {
        if (s.m_type == 1) drawRectangle(s);
        else if (s.m_type == 2) drawCircle(s); }
    //绘制矩形
    public void drawRectangle(Shape r) { System.out.println(" 绘制矩形 "); }
    //绘制圆形
    public void drawCircle(Shape r) { System.out.println(" 绘制圆形 "); }

}
//Shape类，基类
class Shape { int m_type;}
class Rectangle extends Shape { Rectangle() { super.m_type = 1; }}
class Circle extends Shape { Circle() { super.m_type = 2; }}
